#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   dir.py
@Time    :   2024/02/09 01:52:46
@Author  :   chakcy 
@Email   :   947105045@qq.com
@description   :   文件操作
'''

import os
import shutil
from rpa_tool.file_operation.file import exit_path

# 创建文件夹
def create_folder(folder_path:str):
    try:
        # 检查文件夹是否存在，如果不存在则创建
        if not exit_path(folder_path):
            os.makedirs(folder_path)
            print(f"文件夹 {folder_path} 创建成功")
        else:
            print(f"文件夹 {folder_path} 已存在")
    except OSError as e:
        print(f"创建文件夹 {folder_path} 失败：{e}")

# 递归某路径下的文件文件夹，将该路径删除
def delete_folder(folder_path:str):
    try:
        # 检查文件夹是否存在，如果存在则删除
        if exit_path(folder_path):
            shutil.rmtree(folder_path)
            print(f"文件夹 {folder_path} 删除成功")
        else:
            print(f"文件夹 {folder_path} 不存在")
    except OSError as e:
        print(f"删除文件夹 {folder_path} 失败：{e}")

# 递归某路径下的文件文件夹，将该路径移动到指定路径
def move_folder(folder_path:str, dst_folder:str):
    try:
        # 检查文件夹是否存在，如果存在则移动
        if exit_path(folder_path) and exit_path(dst_folder):
            shutil.move(folder_path, dst_folder)
            print(f"文件夹 {folder_path} 移动成功")
        else:
            print(f"文件夹 {folder_path} 或 {dst_folder} 不存在")
    except OSError as e:
        print(f"移动文件夹 {folder_path} 失败：{e}")

# 递归某路径下的文件文件夹，将该路径复制到指定路径
def copy_folder(folder_path:str, dst_folder:str):
    try:
        # 检查文件夹是否存在，如果存在则复制
        if exit_path(folder_path) and exit_path(dst_folder):
            shutil.copytree(folder_path, dst_folder)
            print(f"文件夹 {folder_path} 复制成功")
        else:
            print(f"文件夹 {folder_path} 或 {dst_folder} 不存在")
    except OSError as e:
        print(f"复制文件夹 {folder_path} 失败：{e}")

# 递归某路径下的文件文件夹，将该路径重命名
def rename_folder(folder_path:str, new_folder_path:str):
    try:
        # 检查文件夹是否存在，如果存在则重命名
        if exit_path(folder_path):
            os.rename(folder_path, new_folder_path)
            print(f"文件夹 {folder_path} 重命名为 {new_folder_path}")
        else:
            print(f"文件夹 {folder_path} 不存在")
    except OSError as e:
        print(f"重命名文件夹 {folder_path} 失败：{e}")

# 获取路径下的所有文件路径，并返回列表
def get_all_files(folder_path:str):
    file_list = []
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_list.append(os.path.join(root, file))
    return file_list

# 获取路径下的所有文件夹路径，并返回列表
def get_all_folders(folder_path:str):
    folder_list = []
    for root, dirs, files in os.walk(folder_path):
        for folder in dirs:
            folder_list.append(os.path.join(root, folder))
    return folder_list